package com.manage.modules.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.manage.modules.domain.TBaseArea;
import com.manage.modules.domain.TBaseStationType;
import com.manage.modules.domain.TreeSelectModel;

import java.util.List;

/**
 * 站点分类Service接口
 *
 * @author xu
 * 2021/8/11 17:35
 */
public interface ITBaseStationTypeService extends IService<TBaseStationType> {

    /**
     * 构建前端所需要树结构
     *
     * @param stationTypes 站点分类列表
     * @return 树结构列表
     */
    public List<TBaseStationType> buildStationTypeTree(List<TBaseStationType> stationTypes);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param stationTypes 站点分类列表
     * @return 下拉树结构列表
     */
    List<TreeSelectModel> buildStationTypeTreeSelect(List<TBaseStationType> stationTypes);

    /**
     * 根据站点分类ID查询信息
     *
     * @param typeId 站点分类ID
     * @return 站点分类信息
     */
    public TBaseStationType selectStationTypeById(Long typeId);

    /**
     * 是否存在站点分类子节点
     *
     * @param typeId 站点分类ID
     * @return 结果
     */
    public boolean hasChildByTypeId(Long typeId);

    /**
     * 删除站点分类管理信息
     *
     * @param typeId 站点分类ID
     * @return 结果
     */
    public int deleteStationTypeById(Long typeId);

    /**
     * 查询站点分类信息管理数据
     *
     * @param baseStationType
     * @return
     */
    List<TBaseStationType> selectStationTypeList(TBaseStationType baseStationType);

    /**
     * 校验站点分类名称是否唯一
     *
     * @param baseStationType 站点分类信息
     * @return 结果
     */
    String checkStationTypeNameUnique(TBaseStationType baseStationType);

    /**
     * 新增保存站点分类信息
     *
     * @param baseStationType 站点分类信息
     * @return 结果
     */
    int insertStationType(TBaseStationType baseStationType);

    /**
     * 根据ID查询所有子站点分类（正常状态）
     *
     * @param typeId 站点分类ID
     * @return 子站点分类数
     */
    int selectNormalChildrenStationTypeById(Long typeId);

    /**
     * 修改保存站点分类信息
     *
     * @param baseStationType 站点分类信息
     * @return 结果
     */
    int updateStationType(TBaseStationType baseStationType);
}
